草庐IT

c++ - std::equal_range 与 lambda

全部标签

c++ - 可以用参数包编译c++17 lambda继承的编译器

我读到了usingfunctiondeclaration我想编译最后一个例子。这是:#includetemplatestructOverloader:Ts...{usingTs::operator()...;//exposesoperator()fromeverybase};templateconstexprautomake_overloader(T&&...t){returnOverloader{std::forward(t)...};}intmain(){autoo=make_overloader([](autoconst&a){std::cout即使我已经知道并理解它会做什么,我

c++ - gcc 和 g++ 错误 : error trying to exec 'cc1plus' : execvp: No such file or directory

我在编译时遇到问题.c和.cpp使用gcc的文件和g++,对于这两种情况,我都收到了消息:g++(orgcc):errortryingtoexec'cc1plus':execvp:Nosuchfileordirectory`我已经尝试重新安装gcc和g++并确保它们的版本相同。编辑:我使用的是ubuntu16.04.1LTS,g++和gcc的版本都是5.4.020160609。以下是echo|g++-v-xc++-fsyntax-only-的输出:Usingbuilt-inspecs.COLLECT_GCC=g++Target:x86_64-linux-gnuConfiguredwit

c++ - new T(...) 与 std::make_unique<T>(...).release()

我正在查看companioncode的"HourglassAPI"talkCppCon2014的主要内容是通过使用具有C签名的函数包装类的成员函数来为C++库提供CAPI。除其他外,我对对象的构造方式很感兴趣。在构造新的hairpoll对象的函数hairpoll_construct中,通过获取指针std::make_unique(person).release()实际上是在处理异常的函数中调用的。一个更简单的方法是求助于一个普通的newhairpoll(person)哪些场景更适合前者?这是否与这个特殊API的工作方式有关,还是比这更通用? 最佳答案

c - 使用 strtod strtof atof printf 进行语言环境不变的字符串处理?

是否有任何计划添加在当前语言环境下不变的C标准库字符串处理函数版本?目前有很多脆弱的解决方法,例如,来自jansson/strconv.c:staticvoidto_locale(strbuffer_t*strbuffer){constchar*point;char*pos;point=localeconv()->decimal_point;if(*point=='.'){/*Noconversionneeded*/return;}pos=strchr(strbuffer->value,'.');if(pos)*pos=*point;}staticvoidfrom_locale(cha

c++ - 1/sqrt(x) 和 std::exp(-0.5 * std::log(x)) 之间的数值权衡

我遇到了一些计算的旧代码doubley=1/std::sqrt(x);使用:constexprdoublebase16=16.0;doublelog_base16=std::log(base16);doubley=std::pow(base16,-0.5*std::log(x)/log_base16);本质上是:doubley=std::exp(-0.5*std::log(x));关于这些方法之间的数值优势(例如准确性或更有可能避免下溢/上溢)是否有任何理由?原作者可能是这么想的。 最佳答案 原始代码确实被认为是非常顽皮的,尤其是在

c++ - 初始化期间的 lambda 捕获应该是一个错误

我正在尝试做的是在构造一个可能无效的对象时吃掉异常。它非常适合使用std::optional,但我不相信省略std::optional会改变我看到的错误:对象正在在初始化之前捕获并使用。我认为首先不应该捕获它,因为据我所知我们还没有达到序列点(lambda初始化算作序列点吗?)。此外,该错误是IMO容易捕获的人为错误(甚至确实会被捕获……视情况而定)。lambda如何(更重要的是,为什么)能够捕获和使用尚未初始化的foo?https://godbolt.org/g/IwcHrV#includeusingnamespacestd;voidfoo(){stringfoo=[&]()->st

c++ - 使用 std::aligned_storage 过度对齐的类型

C++标准声明,关于std::aligned_storage模板,Alignshallbeequaltoalignof(T)forsometypeTortodefault-alignment.那是不是说程序中一定有这样的类型,或者说一定是可以做出这样的类型?特别是possibleimplementation建议在cppreference上是templatestructaligned_storage{typedefstruct{alignas(Align)unsignedchardata[Len];}type;};如果可能的话(也就是说,如果Align是有效的对齐方式),这似乎使具有该对

c++ - 如何分离不同配置的 Makefile 构建输出?

假设我有一个项目,其中包含一个简单的Makefile,如下所示:all:foobarfoobar:foo.obar.o我可以构建以针对不同的架构:$CC=clangmake#or$CC=x86_64-w64-mingw32-gccmake#or$CC=arm-linux-gnueabihf-gccmake这可行,但我希望能够同时维护多个配置的输出,例如在构建服务器上。什么是解决此问题的良好、简洁的方法?我考虑了以下几点:使用autotools或其他构建工具,但我想看看没有什么是可能的在其中设置VPATH并包含根Makefile的Makefile创建构建目录编写一个脚本,在构建每个架构后

c++ - 使用 C 数组语法将 GNU Octave(或 Matlab)矩阵输出到文件中

我有一个很大的Octave矩阵,我需要将它的数据导入到我的C++代码中。矩阵全是数字,我想将其保存为头文件中的C数组。例子:>#octave:results=-3.3408e+01-5.0227e+004.3760e+013.2487e+011.0167e+014.1076e+016.3226e+00-3.7095e+011.3318e+013.8582e+01-2.1087e+01-6.1606e+004.8704e+013.1324e+013.0287e+014.0114e+011.5457e+01-3.6283e+012.6035e+014.0112e+01需要的输出:/*Ins

c++ - 为什么执行者不在 Concurrency TS 和 std::future 接口(interface)中了?

std::future::then的接口(interface)在论文中N3784包含一个重载版本,该版本接受一个执行程序(在N3562中有更多描述)作为参数。所以如果你想更多地控制回调在哪个线程上执行,你可以这样做。但是这里的官方文档介绍了并发TS中的所有功能http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0159r0.html#futures.unique_future不包括.then()的重载并且根本不提及执行程序。它说Whentheobject'ssharedstateisready,thecontinuation